package indi.wshape1.takeawaydeliveryinfo.controller;

import com.baomidou.kaptcha.Kaptcha;
import com.baomidou.kaptcha.exception.KaptchaException;
import com.baomidou.kaptcha.exception.KaptchaIncorrectException;
import com.baomidou.kaptcha.exception.KaptchaNotFoundException;
import com.baomidou.kaptcha.exception.KaptchaTimeoutException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author Wshape1
 * @version 1.0
 * @description 验证码处理
 * @since 2023-01-17
 */

@RestController
public class KaptchaController {

    @Autowired
    private Kaptcha kaptcha;

    /**
     * 渲染验证码图像并发送
     */
    @GetMapping("/kaptcha")
    public void getKaptcha() {
        kaptcha.render();
    }

    /**
     * 验证验证码
     *
     * @param code 验证码
     */
    @PostMapping("/kaptcha")
    public boolean valid(@RequestParam("code") String code) {
        return kaptcha.validate(code);
    }

    @RestControllerAdvice
    class KaptchaExceptionHandler {
        @ExceptionHandler(value = KaptchaException.class)
        public String kaptchaExceptionHandler(KaptchaException kaptchaException) {
            if (kaptchaException instanceof KaptchaIncorrectException) {
                return "验证码不正确";
            } else if (kaptchaException instanceof KaptchaNotFoundException) {
                return "验证码未找到";
            } else if (kaptchaException instanceof KaptchaTimeoutException) {
                return "验证码过期";
            } else {
                return "验证码渲染失败";
            }
        }

    }

}
